import * as TYPES from '../action-types';
import { getSliders, getLessons } from '@/api/home';
import { StoreGetState, StoreDispatch } from '../index';
export default {
    setCurrentCategory(currentCategory: string) {
        return {
            type: TYPES.SET_CURRENT_CATEGORY,
            payload: currentCategory
        };
    },
    getSliders() {
        return {
            type: TYPES.GET_SLIDERS,
            payload: getSliders(),
        };
    },
    getLessons() {
        return (dispatch: StoreDispatch, getState: StoreGetState) => {
            (async function () {
                let {
                    currentCategory,
                    lessons: { hasMore, offset, limit, loading },
                } = getState().home;
                if (hasMore && !loading) {
                    dispatch({ type: TYPES.SET_LESSONS_LOADING, payload: true });
                    let result = await getLessons(currentCategory, offset, limit);
                    dispatch({ type: TYPES.SET_LESSONS, payload: result.data });
                }
            })();
        };
    },
    refreshLessons() {
        return (dispatch: StoreDispatch, getState: StoreGetState) => {
            (async function () {
                let {
                    currentCategory,
                    lessons: { limit, loading },
                } = getState().home;
                if (!loading) {
                    dispatch({ type: TYPES.SET_LESSONS_LOADING, payload: true });
                    let result = await getLessons(currentCategory, 0, limit);
                    dispatch({ type: TYPES.REFRESH_LESSONS, payload: result.data });

                }
            })();
        };
    }
};